#define DEBUG
#include <cstdio>
#include <cstring>

using namespace std;

const int maxn=10, maxm=10, maxk=500000;

double max(double a, double b) {
  return a>b ? a : b;
}

double sqr(double a) {
  return a*a;
}

double solveProblem(double y, double z) {
  return 1-sqr(max(0, 1-y/z));
}

int main() {
  freopen("test.in", "r", stdin);
  freopen("test.out", "w", stdout);

  static int x[maxn+1], y[maxm+1], c[maxk+1], a[maxk+1], s[maxk+1], z[maxk+1];

  int n, m, k;
  scanf("%d %d %d", &n, &m, &k);
  for (int i=1; i<=n; i++) {
    scanf("%d", x+i);
  }
  for (int i=1; i<=m; i++) {
    scanf("%d", y+i);
  }
  for (int i=1; i<k; i++) {
    scanf("%d", c+i);
  }
  for (int i=1; i<=k; i++) {
    scanf("%d %d %d", a+i, s+i, z+i);
  }

  double ans=0;

  if (n==0) {
    int last = 0;
    for (int i=1; i<=k; i++) {
      double t=solveProblem(y[s[i]]*(1-(last ? c[i-last] : 0)/100.0), z[i]);
      ans = ans+a[i]*t;
      if (t<0.64) {
	last = i;
      }
    }
    printf("%.2lf", ans);
    return 0;
  }

  const int maxk=100;
  static double f[maxk+1][maxk+1][1<<maxn], drink[1<<maxn];

  for (int i=0; i<=k; i++) {
    for (int j=0; j<=i; j++) {
      for (int u=0; u<(1<<n); u++) {
	f[i][j][u] = -1.0;
      }
    }
  }
  for (int i=0; i<(1<<n); i++) {
    drink[i] = 1;
    for (int j=1; j<=n; j++) {
      drink[i] *= (1+((i>>(j-1))&1)*x[j]/100.0);
    }
  }

  f[0][0][0] = 0;
  for (int i=1; i<=k; i++) {
    for (int j=0; j<i; j++) {
      for (int u=0; u<(1<<n); u++) {
	if (f[i-1][j][u]>=0) {
	  double g = y[s[i]]*(1-(j ? c[i-j] : 0)/100.0), t = solveProblem(g, z[i]);
	  if (t<0.64) {
	    f[i][i][u] = max(f[i][i][u], f[i-1][j][u]+a[i]*t);
	  } else {
	    f[i][j][u] = max(f[i][j][u], f[i-1][j][u]+a[i]*t);
	  }
	  for (int w=(~u)&((1<<n)-1), v=w; v; v=(v-1)&w) {
	    t = solveProblem(g*drink[v], z[i]);
	    if (t<0.64) {
	      f[i][i][u+v] = max(f[i][i][u+v], f[i-1][j][u]+a[i]*t);
	    } else {
	      f[i][j][u+v] = max(f[i][j][u+v], f[i-1][j][u]+a[i]*t);
	    }
	  }
	}
      }
    }
  }

  for (int j=0; j<=k; j++) {
    ans = max(ans, f[k][j][(1<<n)-1]);
  }

  printf("%.2lf", ans);

  fclose(stdin);
  fclose(stdout);
  return 0;
}
